﻿using System;
using System.Web;
using System.Web.UI.WebControls;
using DMS.Business.Modules.Organization;
using DMS.Business.Modules.SupplierManagement;
using DMS.Business.Utility;

namespace DMS.Web.Common.Controls
{
    public partial class ModuleNavigation : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void tvModuleNav_DataBound(object sender, EventArgs e)
        {
            //权限过滤

            AuthenticationUser currentUser = SystemContext.Current.LoginAuthUser;
            if (currentUser is SupplierAccount)
                return;


            //if (dsModuleMap.Provider.CurrentNode.Title == "单据查询")
            //{
            //    //只有物资管理员和系统管理员可查看采购单
            //    if (!currentUser.IsMaterialManager && !currentUser.IsSystemManager)
            //    {
            //        foreach (TreeNode tn in tvModuleNav.Nodes)
            //        {
            //            if (tn.Text == "采购单查询")
            //            {
            //                tvModuleNav.Nodes.Remove(tn);
            //                break;
            //            }
            //        }
            //    }

            //    //只有物资管理员、仓库管理员和系统管理员可查看入库单
            //    if (!currentUser.IsMaterialManager && !currentUser.IsSystemManager && !currentUser.IsStockManager)
            //    {
            //        foreach (TreeNode tn in tvModuleNav.Nodes)
            //        {
            //            if (tn.Text == "入库单查询")
            //            {
            //                tvModuleNav.Nodes.Remove(tn);
            //                break;
            //            }
            //        }
            //    }
            //}

            //if (dsModuleMap.Provider.CurrentNode.Title == "基础资料配置")
            //{
            //    //只有物资管理员和系统管理员可配置部门参数和物资基础资料
            //    if (!currentUser.IsMaterialManager && !currentUser.IsSystemManager)
            //    {
            //        foreach (TreeNode tn in tvModuleNav.Nodes)
            //        {
            //            if (tn.Text == "部门参数设置" || tn.Text == "物资基础资料")
            //            {
            //                tvModuleNav.Nodes.Remove(tn);
            //            }
            //        }
            //    }
            //}

            //if (dsModuleMap.Provider.CurrentNode.Title == "系统管理")
            //{
            //    //物资管理员只能查看成员角色管理
            //    if (currentUser.IsVersatilePerson)
            //    {
            //        for (int i = 0; i < tvModuleNav.Nodes[0].ChildNodes.Count; i++)
            //        {
            //            if (tvModuleNav.Nodes[0].ChildNodes[i].Text != "成员角色管理")
            //            {
            //                tvModuleNav.Nodes[0].ChildNodes.RemoveAt(i);
            //                i--;
            //            }
            //        }

            //        //不能查看系统日志
            //        tvModuleNav.Nodes.RemoveAt(1);
            //    }
            //}
        }

        protected void tvModuleNav_TreeNodeDataBound(object sender, TreeNodeEventArgs e)
        {
            AuthenticationUser aUser = SystemContext.Current.LoginAuthUser;
            SiteMapNode node = e.Node.DataItem as SiteMapNode;
            if (node == null)
            {
                return;
            }

            if (node.Roles.Count > 0)
            {
                bool isDisplay = false;
                foreach (string role in node.Roles)
                {
                    if (aUser.IsInRole(role))
                    {
                        isDisplay = true;
                        break;
                    }
                }

                if (!isDisplay)
                {
                    //this.tvModuleNav.Nodes.Remove(e.Node);
                    if (e.Node.Parent!=null)
                        e.Node.Parent.ChildNodes.Remove(e.Node);
                    else
                        this.tvModuleNav.Nodes.Remove(e.Node);
                }
            }
        }
    }
}